-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
YAXUnit, вторая попытка #114
YAXUnit, вторая попытка #114
Conversation
* add params * rewrite and add params * fix options merge * fix command * switch to ArrayList * fix junit reports * fix yaxunit config * fix yaxunit config * fix yaxunit config paths * add allure * fix allure * fix public * fix static * copy allure * publish options * schema upd
Обзор измененийОбновление зависимостей и расширение функциональности в проекте Jenkins. Добавлены новые методы для работы с файлами, поддержка конфигурации YAXUnit, а также улучшена логика загрузки расширений. Оптимизированы тесты и обновлены документации. Изменения
Стих
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 1
Configuration used: CodeRabbit UI
Files ignored due to path filters (4)
resources/globalConfiguration.json
is excluded by:!**/*.json
resources/schema.json
is excluded by:!**/*.json
resources/yaxunit.json
is excluded by:!**/*.json
test/integration/resources/jobConfiguration.json
is excluded by:!**/*.json
Files selected for processing (17)
- README.md (2 hunks)
- build.gradle.kts (2 hunks)
- src/ru/pulsar/jenkins/library/IStepExecutor.groovy (1 hunks)
- src/ru/pulsar/jenkins/library/StepExecutor.groovy (1 hunks)
- src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy (1 hunks)
- src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (3 hunks)
- src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy (2 hunks)
- src/ru/pulsar/jenkins/library/configuration/StageFlags.groovy (2 hunks)
- src/ru/pulsar/jenkins/library/configuration/TimeoutOptions.groovy (1 hunks)
- src/ru/pulsar/jenkins/library/configuration/YaxunitOptions.groovy (1 hunks)
- src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (3 hunks)
- src/ru/pulsar/jenkins/library/steps/PublishAllure.groovy (2 hunks)
- src/ru/pulsar/jenkins/library/steps/Yaxunit.groovy (1 hunks)
- src/ru/pulsar/jenkins/library/utils/VRunner.groovy (2 hunks)
- test/integration/groovy/jobConfigurationTest.groovy (1 hunks)
- vars/pipeline1C.groovy (1 hunks)
- vars/yaxunit.groovy (1 hunks)
Files skipped from review due to trivial changes (1)
- src/ru/pulsar/jenkins/library/utils/VRunner.groovy
Additional comments: 25
vars/yaxunit.groovy (1)
- 1-12: Изменения в файле
vars/yaxunit.groovy
выглядят корректно и соответствуют задаче интеграции YAXUnit в Jenkins pipeline.src/ru/pulsar/jenkins/library/configuration/YaxunitOptions.groovy (1)
- 1-40: Изменения в файле
src/ru/pulsar/jenkins/library/configuration/YaxunitOptions.groovy
корректны и соответствуют задаче конфигурации YAXUnit.src/ru/pulsar/jenkins/library/configuration/StageFlags.groovy (2)
- 21-22: Добавление флага
yaxunit
корректно и соответствует задаче интеграции YAXUnit.- 52-52: Изменение метода
needInfoBase
для включения флагаyaxunit
в логику определения необходимости информационной базы является корректным.src/ru/pulsar/jenkins/library/steps/PublishAllure.groovy (1)
- 36-38: Добавление условия для
yaxunit
в методrun
для извлечения результатов тестов YAXUnit корректно и улучшает интеграцию с Allure.src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (1)
- 50-53: Добавление условия проверки существования файла настроек
vrunner
и его использование в команде загрузки расширения улучшает гибкость и надежность процесса загрузки расширений.test/integration/groovy/jobConfigurationTest.groovy (1)
- 77-77: Добавление утверждения для "custom_units" расширяет покрытие тестами и улучшает проверку корректности работы конфигурации.
src/ru/pulsar/jenkins/library/configuration/TimeoutOptions.groovy (1)
- 69-72: Добавление поля
yaxunit
для указания таймаута тестов YAXUnit корректно и улучшает конфигурируемость таймаутов различных этапов CI/CD.src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (3)
- 17-17: Обновление значения по умолчанию для
initMethod
улучшает понимание кода и соответствует задаче улучшения конфигурации.- 29-34: Удаление точек с запятой и обновление значений по умолчанию улучшает читаемость и консистентность кода.
- 39-54: Обновление значений по умолчанию для класса
Extension
улучшает понимание и использование класса.src/ru/pulsar/jenkins/library/IStepExecutor.groovy (1)
- 29-30: Добавлен метод
writeFile
в интерфейсIStepExecutor
. Убедитесь, что реализации этого метода в классах, реализующих интерфейс, корректно обрабатывают исключения и безопасно работают с файловой системой.src/ru/pulsar/jenkins/library/steps/Yaxunit.groovy (1)
- 24-89: Класс
Yaxunit
корректно реализует логику выполнения YAXUnit тестов. Особое внимание стоит уделить безопасности работы с файлами и корректности выполнения команд. Убедитесь, что все потенциальные исключения обрабатываются должным образом, чтобы обеспечить точность результатов тестирования.build.gradle.kts (1)
- 64-65: Добавлена зависимость
spring-security-core
в блокintegrationTestImplementation
. Убедитесь, что выбранная версия зависимости соответствует требованиям проекта и не вызывает конфликтов с другими зависимостями.src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy (1)
- 58-61: Добавлено поле
yaxunitOptions
в классJobConfiguration
, что расширяет возможности конфигурации YAXUnit тестирования. Убедитесь, что поле корректно используется в логике приложения и аннотировано для правильной сериализации и десериализации.src/ru/pulsar/jenkins/library/StepExecutor.groovy (1)
- 45-48: Реализация метода
writeFile
в классеStepExecutor
корректно добавлена. Убедитесь, что метод безопасно работает с файловой системой и корректно обрабатывает исключения, чтобы предотвратить потенциальные проблемы при записи файлов.src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy (1)
- 68-69: Добавлена поддержка
yaxunitOptions
иextensions
в классеConfigurationReader
. Убедитесь, что новые поля корректно обрабатываются при чтении конфигурации и не вызывают проблем с совместимостью или безопасностью.vars/pipeline1C.groovy (1)
- 247-262: Добавлена стадия
YAXUnit тесты
в скрипт пайплайна. Убедитесь, что стадия корректно настроена и не влияет на производительность или стабильность пайплайна. Важно также проверить, что тесты выполняются как ожидается и результаты корректно обрабатываются.README.md (7)
- 36-42: > 📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [8-8]
Возможно, найдена орфографическая ошибка в слове "пайплайн". В русском языке принято использовать слово "пайплайн" для обозначения конвейера в контексте разработки программного обеспечения, однако стоит учитывать контекст и возможные стилистические предпочтения.
- 36-42: > 📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [13-13]
Это предложение не начинается с заглавной буквы. Рекомендуется начинать каждый пункт списка с заглавной буквы для единообразия и лучшей читаемости.
- 39-39: Возможно, найдена орфографическая ошибка в слове "юнит-тестов". В русском языке принято использование термина "юнит-тесты" для обозначения модульных тестов, однако стоит учитывать контекст и возможные стилистические предпочтения.
- 36-42: > 📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [45-45]
Возможно, найдена орфографическая ошибка в слове "oscript-приложений". В контексте данного документа использование термина "oscript" корректно, так как он относится к конкретной технологии. Однако, стоит убедиться, что это название используется единообразно по всему документу.
- 36-42: > 📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [67-67]
Возможно, найдена орфографическая ошибка в слове "пайплайн". В русском языке принято использовать слово "пайплайн" для обозначения конвейера в контексте разработки программного обеспечения, однако стоит учитывать контекст и возможные стилистические предпочтения.
- 36-42: > 📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [69-69]
Возможно, найдена орфографическая ошибка в слове "пайплайна". В русском языке принято использовать слово "пайплайн" для обозначения конвейера в контексте разработки программного обеспечения, однако стоит учитывать контекст и возможные стилистические предпочтения.
- 36-42: > 📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [124-124]
Возможно, найдена орфографическая ошибка в слове "тяжёлости". В данном контексте использование слова "тяжёлости" корректно, так как оно относится к сложности или ресурсоёмкости шагов сборки. Однако, стоит убедиться, что это слово используется единообразно по всему документу.
src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy
Outdated
Show resolved
Hide resolved
Может это, "скоммуницироваться в социуме" с @Segate-ekb на тему списка стейджей, когда грузить? Можно ещё vrunner.json прям в элемент Extension добавить |
Ну как по мне, то проще всего предусмотреть возможность грузить везде, где используется предприятие+ дефолтная точка загрузки, как сейчас. |
исправление замечаний
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 8
Configuration used: CodeRabbit UI
Files ignored due to path filters (1)
resources/globalConfiguration.json
is excluded by:!**/*.json
Files selected for processing (9)
- README.md (5 hunks)
- build.gradle.kts (2 hunks)
- src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (3 hunks)
- src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy (3 hunks)
- src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (2 hunks)
- src/ru/pulsar/jenkins/library/steps/PublishAllure.groovy (2 hunks)
- test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java (1 hunks)
- vars/loadExtensions.groovy (1 hunks)
- vars/pipeline1C.groovy (2 hunks)
Files skipped from review as they are similar to previous changes (6)
- build.gradle.kts
- src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy
- src/ru/pulsar/jenkins/library/configuration/JobConfiguration.groovy
- src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy
- src/ru/pulsar/jenkins/library/steps/PublishAllure.groovy
- vars/pipeline1C.groovy
Additional comments: 2
vars/loadExtensions.groovy (1)
- 5-5: Добавление параметра по умолчанию
stageName
к функцииcall
улучшает гибкость и читаемость кода. Однако, стоит добавить комментарий в коде, описывающий назначение и возможные значения этого параметра, чтобы упростить понимание кода для других разработчиков.README.md (1)
- 111-111: В предыдущих комментариях была указана ошибка в слове "По-умолчанию". Правильно писать слитно: "по умолчанию".
// when | ||
Object run = loadExtensions.run(); | ||
|
||
// assertThat(log.toString).(1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Комментарий утверждения в тесте не позволяет проверить корректность работы метода run
. Рекомендуется дописать утверждение для проверки ожидаемого результата выполнения метода.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nixel2007 вот с этим нужна помощь
я хочу в тесте запустить этот метод и проверить, что расширения фильтруются в зависимости от stage. но т.к. при выполнении теста не определен env, то при обращении к env.NODE_NAME в Logger вылетает NPE
немного попробовал замокать контекст, но с ходу не вышло, т.к. env - это абстрактный класс
нужна подсказка, как лучше сделать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nixel2007 тест дописал. Решил создать свой класс EnvUtils, который реализует нужный интерфейс. Правда, нужные поля в этот класс я добавил непосредственно и захардкодил значения. Не очень красиво, но тест работает.
1. Трансформация кода из формата конфигуратора в формат EDT. | ||
1. Трансформация кода из формата EDT в формат конфигуратора. | ||
1. Запуск BDD сценариев с сохранением результатов в формате Allure. | ||
1. Запуск юнит-тестов с помощью фреймворка YAXUnit с сохранением результатов в формате jUnit и Allure. | ||
1. Запуск синтаксического контроля средствами конфигуратора и сохранение результатов в виде отчета jUnit. | ||
1. Запуск валидации проекта средствами EDT и конвертация отчета в формате generic issues. | ||
1. Запуск статического анализа для SonarQube. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [8-8]
Возможно, найдена орфографическая ошибка. Правильно будет: "иметь схожий и контролируемый пайплайн для всех проектов; дать пользователю".
📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [13-13]
Это предложение не начинается с заглавной буквы. Рекомендуется начать с заглавной для единообразия стиля документации.
📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [45-45]
Возможно, найдена орфографическая ошибка. Правильно будет: "Конфигурирование логгера запускаемых oscript-приложений".
📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [67-67]
Возможно, найдена орфографическая ошибка. Правильно будет: "Да, вот и весь пайплайн. Конфигурирование через json".
📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [69-69]
Возможно, найдена орфографическая ошибка. Правильно будет: "Внешний вид пайплайна в интерфейсе Blue Ocean".
📝 NOTE
This review was outside the diff hunks, and no overlapping diff hunk was found. Original lines [124-124]
Возможно, найдена орфографическая ошибка. Правильно будет: "минутах (от 10 до 240 в зависимости от 'тяжести' шага сборки), но может быть переопределен".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 0
Configuration used: CodeRabbit UI
Files selected for processing (1)
- vars/pipeline1C.groovy (2 hunks)
Files skipped from review as they are similar to previous changes (1)
- vars/pipeline1C.groovy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 0
Configuration used: CodeRabbit UI
Files selected for processing (2)
- src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy (1 hunks)
- vars/pipeline1C.groovy (2 hunks)
Files skipped from review as they are similar to previous changes (2)
- src/ru/pulsar/jenkins/library/configuration/ConfigurationReader.groovy
- vars/pipeline1C.groovy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 0
Configuration used: CodeRabbit UI
Files selected for processing (1)
- src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (2 hunks)
Files skipped from review as they are similar to previous changes (1)
- src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 2
Configuration used: CodeRabbit UI
Files ignored due to path filters (2)
resources/schema.json
is excluded by!**/*.json
test/unit/resources/jobConfiguration.json
is excluded by!**/*.json
Files selected for processing (7)
- build.gradle.kts (3 hunks)
- src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (3 hunks)
- src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (2 hunks)
- test/integration/groovy/jobConfigurationTest.groovy (1 hunks)
- test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java (1 hunks)
- test/unit/groovy/ru/pulsar/jenkins/library/utils/EnvUtils.java (1 hunks)
- test/unit/groovy/ru/pulsar/jenkins/library/utils/TestUtils.java (1 hunks)
Additional comments (10)
test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java (2)
- 24-26: Метод
setUp
используетTestUtils.setupMockedContext()
для настройки мокированного контекста перед каждым тестом. Убедитесь, что это действительно необходимо для всех тестов в классе.- 30-52: Тест
runYaxunit
проверяет, что расширения фильтруются в зависимости от стадии. Однако, важно также проверить, что фильтрация происходит корректно и что остальная логика методаrun
работает как ожидается. Рассмотрите возможность добавления дополнительных утверждений для полноты теста.test/unit/groovy/ru/pulsar/jenkins/library/utils/TestUtils.java (1)
- 31-31: Добавление мокирования поведения
steps.env()
в методеgetMockedStepExecutor
позволяет тестам получать экземплярEnvUtils
вместо реального окружения. Это улучшение помогает избежатьNullPointerException
при тестировании кода, зависящего от переменных окружения.test/integration/groovy/jobConfigurationTest.groovy (1)
- 50-50: Удаление точки с запятой в Groovy коде является допустимым, так как в Groovy точки с запятой не обязательны. Однако, стоит следить за единообразием стиля кода в проекте.
src/ru/pulsar/jenkins/library/configuration/InitInfoBaseOptions.groovy (2)
- 17-17: Изменение значения по умолчанию для
initMethod
наFROM_STORAGE
не влияет на поведение, так как новое значение совпадает с предыдущим. Убедитесь, что это изменение действительно необходимо.- 56-56: Добавление поля
stages
в классExtension
позволяет более гибко управлять загрузкой расширений на различных этапах. Это улучшение способствует более тонкой настройке процесса инициализации и расширения функциональности.src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (2)
- 14-22: Добавление полей
stageName
иextensionsFiltered
в классLoadExtensions
, а также изменение конструктора для приемаstageName
улучшает гибкость класса, позволяя фильтровать расширения в зависимости от этапа. Это положительно сказывается на модульности и расширяемости кода.- 33-42: Обновленная логика в методе
run
для фильтрации расширений в зависимости отstageName
улучшает управление расширениями, делая процесс более гибким и настраиваемым. Это значительное улучшение для работы с расширениями на разных этапах.build.gradle.kts (2)
- 51-51: Обновление зависимости
mockito-core
до версии5.11.0
улучшает совместимость и предоставляет доступ к новым функциям и исправлениям. Это положительное изменение для поддержки качества тестирования.- 64-64: Добавление пустых строк для улучшения читаемости кода является хорошей практикой. Однако, стоит следить за тем, чтобы подобные изменения не приводили к неединообразию в форматировании кода в проекте.
public String NODE_NAME = "node"; | ||
public String WORKSPACE = "ws"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Публичные поля NODE_NAME
и WORKSPACE
в классе EnvUtils
должны быть объявлены как static final
и именованы в верхнем регистре, согласно конвенции именования констант в Java.
- public String NODE_NAME = "node";
- public String WORKSPACE = "ws";
+ public static final String NODE_NAME = "node";
+ public static final String WORKSPACE = "ws";
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
public String NODE_NAME = "node"; | |
public String WORKSPACE = "ws"; | |
public static final String NODE_NAME = "node"; | |
public static final String WORKSPACE = "ws"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nixel2007 вот эти поля, про которые я говорил
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!
public EnvVars getEnvironment() throws IOException, InterruptedException { | ||
return null; | ||
} | ||
|
||
@Override | ||
public String getIconFileName() { | ||
return null; | ||
} | ||
|
||
@Override | ||
public String getDisplayName() { | ||
return null; | ||
} | ||
|
||
@Override | ||
public String getUrlName() { | ||
return null; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Все переопределенные методы в классе EnvUtils
возвращают null
. Это может привести к NullPointerException
при их использовании. Рекомендуется реализовать эти методы или добавить комментарии, объясняющие, почему они не реализованы.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
try { | ||
unstash GetExtensions.EXTENSIONS_STASH | ||
} catch (Exception e) { | ||
echo e.toString() | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Рассмотрите возможность добавления более информативного сообщения об ошибке в блоке catch. Например, указание на то, что произошла ошибка при попытке извлечения расширений, может помочь в диагностике проблем.
- echo e.toString()
+ echo "Ошибка при попытке извлечения расширений: ${e.toString()}"
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
try { | |
unstash GetExtensions.EXTENSIONS_STASH | |
} catch (Exception e) { | |
echo e.toString() | |
} | |
try { | |
unstash GetExtensions.EXTENSIONS_STASH | |
} catch (Exception e) { | |
echo "Ошибка при попытке извлечения расширений: ${e.toString()}" | |
} |
@ivanmolodec загрузка\незагрузка расширения YAXUnit - это только один частный случай. Допускаю, что возможность загружать\не загружать то или иное расширение может пригодиться и в других стейджах. Соответственно, нужна гибкая настройка. Кстати, если при запуске дымовых в базе стали открываться обработки YAXUnit, значит, проект сконфигурирован не совсем правильно: для расширения YAXUnit необходимо указать Логика обработки расширений в пайплайне такая:
|
Да, теперь понятно. Просто нигде в ридми это не прописано, или ткни меня туда) Если нет, то стоит дописать потому что не очевидно |
Что-то у меня при такой настройке конфигурации он подключил расширение и при инициализации, и перед шагом юнит-тестов. Что я делаю не так?) "initInfobase": {
"initMethod": "fromSource",
"extensions": [
{
"name": "YAXUnit",
"initMethod": "fromSource",
"path": "src/cfe/YAXUnit",
"stages": ["yaxunit"]
}
]
} |
@ivanmolodec посмотрю |
@ovcharenko-di посмотри нет ли конфликтов после мержа соседнего мр, пожалуйста. |
@nixel2007 ок, позже |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Out of diff range and nitpick comments (1)
README.md (1)
Line range hint
183-187
: Исправьте форматирование ненумерованных списков в markdown. Вместо тире используйте звездочки, и убедитесь, что отступы соответствуют уровню вложенности.- * По умолчанию версия модуля EDT не заполнена, т.к. в случае единственной версии для утилиты ring дополнительного указания не требуется (`edtVersion`). + * По умолчанию версия модуля EDT не заполнена, т.к. в случае единственной версии для утилиты ring дополнительного указания не требуется (`edtVersion`).
Review Details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (4)
- README.md (5 hunks)
- src/ru/pulsar/jenkins/library/IStepExecutor.groovy (1 hunks)
- src/ru/pulsar/jenkins/library/StepExecutor.groovy (1 hunks)
- vars/pipeline1C.groovy (2 hunks)
Additional comments not posted (4)
src/ru/pulsar/jenkins/library/IStepExecutor.groovy (1)
29-30
: Добавление методаwriteFile
соответствует стилю и принципам проектирования интерфейса. Отличная работа!src/ru/pulsar/jenkins/library/StepExecutor.groovy (1)
45-48
: Реализация методаwriteFile
корректно делегирует операцию записи файла объектуsteps
, что является типичным подходом в Jenkins shared libraries. Отличная работа!vars/pipeline1C.groovy (1)
Line range hint
207-320
: Добавлены этапы для распаковки информационной базы и загрузки расширений, специфичных для BDD и дымовых тестов. Эти изменения улучшают функциональность пайплайна и соответствуют целям проекта.README.md (1)
207-210
: Добавлены подробные инструкции для настройки шага YAXUnit, что улучшает документацию и предоставляет полезную информацию пользователям.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Review Details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (1)
test/unit/resources/jobConfiguration.json
is excluded by!**/*.json
Files selected for processing (2)
- src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (2 hunks)
- test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java (1 hunks)
Additional comments not posted (3)
test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java (1)
25-28
: МетодsetUp
корректно настраивает тестовую среду.src/ru/pulsar/jenkins/library/steps/LoadExtensions.groovy (2)
19-25
: Конструктор и методgetExtensionsFiltered
корректно реализованы.
80-95
: МетодgetVrunnerSettingsForStage
корректно реализован.
test/unit/groovy/ru/pulsar/jenkins/library/steps/LoadExtensionsTest.java
Show resolved
Hide resolved
Extension[] getExtensionsFiltered() { | ||
return extensionsFiltered | ||
} | ||
|
||
def run() { | ||
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() | ||
|
||
Logger.printLocation() | ||
|
||
def env = steps.env(); | ||
def extensions = this.config.initInfoBaseOptions.extensions | ||
|
||
if (this.stageName) { | ||
this.extensionsFiltered = extensions.findAll { extension -> | ||
extension.stages.contains(this.stageName) | ||
} | ||
} | ||
else { | ||
this.extensionsFiltered = extensions.findAll { extension -> extension.stages.length == 0 || extension.stages.contains("initInfoBase") } | ||
} | ||
|
||
def env = steps.env() | ||
String cfeDir = "$env.WORKSPACE/$GetExtensions.EXTENSIONS_OUT_DIR" | ||
|
||
String vrunnerPath = VRunner.getVRunnerPath(); | ||
config.initInfoBaseOptions.extensions.each { | ||
String vrunnerPath = VRunner.getVRunnerPath() | ||
|
||
this.extensionsFiltered.each { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В методе run
необходимо добавить экранирование для Unix путей в параметре executeParameter
.
- if (steps.isUnix()) {
- executeParameter = '\\' + executeParameter
+ if (steps.isUnix()) {
+ executeParameter = '\\\\' + executeParameter
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Extension[] getExtensionsFiltered() { | |
return extensionsFiltered | |
} | |
def run() { | |
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() | |
Logger.printLocation() | |
def env = steps.env(); | |
def extensions = this.config.initInfoBaseOptions.extensions | |
if (this.stageName) { | |
this.extensionsFiltered = extensions.findAll { extension -> | |
extension.stages.contains(this.stageName) | |
} | |
} | |
else { | |
this.extensionsFiltered = extensions.findAll { extension -> extension.stages.length == 0 || extension.stages.contains("initInfoBase") } | |
} | |
def env = steps.env() | |
String cfeDir = "$env.WORKSPACE/$GetExtensions.EXTENSIONS_OUT_DIR" | |
String vrunnerPath = VRunner.getVRunnerPath(); | |
config.initInfoBaseOptions.extensions.each { | |
String vrunnerPath = VRunner.getVRunnerPath() | |
this.extensionsFiltered.each { | |
Extension[] getExtensionsFiltered() { | |
return extensionsFiltered | |
} | |
def run() { | |
IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() | |
Logger.printLocation() | |
def extensions = this.config.initInfoBaseOptions.extensions | |
if (this.stageName) { | |
this.extensionsFiltered = extensions.findAll { extension -> | |
extension.stages.contains(this.stageName) | |
} | |
} | |
else { | |
this.extensionsFiltered = extensions.findAll { extension -> extension.stages.length == 0 || extension.stages.contains("initInfoBase") } | |
} | |
if (steps.isUnix()) { | |
executeParameter = '\\\\' + executeParameter | |
def env = steps.env() | |
String cfeDir = "$env.WORKSPACE/$GetExtensions.EXTENSIONS_OUT_DIR" | |
String vrunnerPath = VRunner.getVRunnerPath() | |
this.extensionsFiltered.each { |
@ivanmolodec спасибо, я нашел и исправил ошибку. сейчас расширения лишний раз не должны загружаться @nixel2007 влил develop, все по прежнему красиво |
Спасибо! Проверил, загрузилось только перед шагом яксюнита, сборка полностью зеленая) |
} | ||
|
||
if (options.publishToAllureReport) { | ||
String allureReport = "./build/out/allure/yaxunit/junit.xml" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Аналогично.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nixel2007 конкретно здесь библиотека просто копирует ./build/out/yaxunit/junit.xml
в ./build/out/allure/yaxunit/junit.xml
, конечный путь пользователь не переопределяет
@ovcharenko-di @ivanmolodec посоны, ещё один follow-up :( |
@ivanmolodec организуешь красивый скрин? :) |
|
@ivanmolodec для полной красоты осталось едт настроить) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Out of diff range and nitpick comments (1)
README.md (1)
Line range hint
184-188
: В списке настроек загрузки расширений используется неправильный символ для элементов списка (тире вместо астериска) и неправильный отступ. Это нарушает единообразие стиля документации.- - При загрузке из исходников расширения должны быть в том же формате(edt или конфигуратора) что и основная конфигурация. - - Для загрузки расширений необходимо описать каждое из них в массиве (`initInfobase` -> `extensions`) + * При загрузке из исходников расширения должны быть в том же формате(edt или конфигуратора) что и основная конфигурация. + * Для загрузки расширений необходимо описать каждое из них в массиве (`initInfobase` -> `extensions`)
Review Details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (1)
- README.md (6 hunks)
Additional comments not posted (2)
README.md (2)
39-39
: Добавлено упоминание о сохранении результатов юнит-тестов с помощью фреймворка YAXUnit в формате jUnit и Allure.
210-212
: Добавлены инструкции по настройке шага YAXUnit, включая добавление расширений и использование собственного файлаyaxunit.json
. Это улучшает гибкость и настройку процесса тестирования.
Огромное спасибо, ребята! |
Вместо #94
Решил выделить в отдельный PR, чтобы было удобно работать с ним напрямую.
Для решения проблемы с подключением расширений после доп. шагов инициализации (где могут создаваться пользователи ИБ) я добавил возможность использования vrunner.json в initInfoBase.
Summary by CodeRabbit
Новые функции
yaxunitOptions
для расширения настроек конфигурации.Исправления ошибок
Обновления зависимостей
mockito-core
с версии3.3.3
до5.11.0
.Рефакторинг
writeFile
для записи текста в файл с указанной кодировкой.yaxunit
.Тесты